import { ref } from 'vue';

// 基础 URL
const BASE_URL = 'https://flyer.feishou.homes';

// 请求拦截器
const requestInterceptor = (config) => {
  // 添加全局请求头
  config.header = config.header || {};
  config.header['Authorization'] = 'Bearer ' + uni.getStorageSync('token'); // 添加 token
  return config;
};

// 响应拦截器
const responseInterceptor = (response) => {
  // 统一处理响应数据
  if (response.statusCode === 200) {
    return response.data;
  } else {
    return Promise.reject(response.data);
  }
};

// 错误处理
const errorHandler = (error) => {
  // 统一处理错误
  uni.showToast({
    title: error.message || '请求失败，请稍后重试',
    icon: 'none',
  });
  return Promise.reject(error);
};

// 封装请求方法
const request = (options) => {
	uni.showLoading({
	    title: '加载中...',
	    mask: true,
	});
	  // 合并配置
	  const config = {
		url: BASE_URL + options.url,
		method: options.method || 'GET',
		data: options.data || {},
		header: options.header || {},
	  };

	  // 请求拦截
	  const finalConfig = requestInterceptor(config);

	  return new Promise((resolve, reject) => {
		uni.request({
		  ...finalConfig,
		  success: (res) => {
			  uni.hideLoading();
			// 响应拦截
			const response = responseInterceptor(res);
			resolve(response);
		  },
		  fail: (err) => {
			  uni.hideLoading();
			// 错误处理
			errorHandler(err);
			reject(err);
		  },
		});
	  });
};

export default request;